package com.pond.pond.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.pond.common.core.annotation.Excel;
import com.pond.common.core.web.domain.BaseEntity;

/**
 * 鱼流转记录对象 fish_flow_record
 * 
 * @author ruoyi
 * @date 2025-05-13
 */
public class FishFlowRecord extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键ID */
    private Long id;

    /** 鱼塘ID，关联 pond 表 */
    @Excel(name = "鱼塘ID，关联 pond 表")
    private Long pondId;

    /** 所属部门（租户）ID */
    @Excel(name = "所属部门ID")
    private Long deptId;

    /** 转入鱼塘id */
    @Excel(name = "转入鱼塘id")
    private Long targetPondId;

    /** 鱼种类ID，关联 fish_type 表 */
    @Excel(name = "鱼种类ID，关联 fish_type 表")
    private Long fishTypeId;

    /** 流转类型：1=进鱼，2=出鱼 3=转塘 */
    @Excel(name = "流转类型：1=进鱼，2=出鱼，3=转塘")
    private Long flowType;

    /** 重量（kg） */
    @Excel(name = "重量", readConverterExp = "k=g")
    private BigDecimal weight;

    /** 实际单价（元/kg） */
    @Excel(name = "实际单价", readConverterExp = "元=/kg")
    private BigDecimal pricePerKg;

    /** 记录时间 */
    @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "GMT+8")
    @Excel(name = "记录时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date flowTime;

    /** 客户或供货商名称 */
    @Excel(name = "客户或供货商名称")
    private String customerOrSupplier;

    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }

    public void setPondId(Long pondId) 
    {
        this.pondId = pondId;
    }

    public Long getPondId() 
    {
        return pondId;
    }

    public void setFishTypeId(Long fishTypeId) 
    {
        this.fishTypeId = fishTypeId;
    }

    public Long getFishTypeId() 
    {
        return fishTypeId;
    }

    public void setFlowType(Long flowType) 
    {
        this.flowType = flowType;
    }

    public Long getFlowType() 
    {
        return flowType;
    }

    public void setWeight(BigDecimal weight) 
    {
        this.weight = weight;
    }

    public BigDecimal getWeight() 
    {
        return weight;
    }

    public void setPricePerKg(BigDecimal pricePerKg) 
    {
        this.pricePerKg = pricePerKg;
    }

    public BigDecimal getPricePerKg() 
    {
        return pricePerKg;
    }

    public void setFlowTime(Date flowTime) 
    {
        this.flowTime = flowTime;
    }

    public Date getFlowTime() 
    {
        return flowTime;
    }

    public void setCustomerOrSupplier(String customerOrSupplier) 
    {
        this.customerOrSupplier = customerOrSupplier;
    }

    public String getCustomerOrSupplier() 
    {
        return customerOrSupplier;
    }

    /** 关联的财务记录主键 ID */
    private Long linkedFinanceId;

    public Long getLinkedFinanceId() {
        return linkedFinanceId;
    }
    public void setLinkedFinanceId(Long id) {
        this.linkedFinanceId = id;
    }

    public Long getDeptId() {
        return deptId;
    }
    public void setDeptId(Long deptId) {
        this.deptId = deptId;
    }

    public Long getTargetPondId() {
        return targetPondId;
    }
    public void setTargetPondId(Long targetPondId) {
        this.targetPondId = targetPondId;
    }

    /** 是否绑定财务记录（前端控制） */
    private Integer bindFinanceRecord;

    public Integer getBindFinanceRecord() {
        return bindFinanceRecord;
    }

    public void setBindFinanceRecord(Integer bindFinanceRecord) {
        this.bindFinanceRecord = bindFinanceRecord;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("pondId", getPondId())
            .append("deptId", getDeptId())
            .append("fishTypeId", getFishTypeId())
            .append("targetPondId", getTargetPondId())
            .append("linkedFinanceId", getLinkedFinanceId())
            .append("flowType", getFlowType())
            .append("weight", getWeight())
            .append("pricePerKg", getPricePerKg())
            .append("flowTime", getFlowTime())
            .append("customerOrSupplier", getCustomerOrSupplier())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }


}
